Systems and methods for synthetic data generation for time-series data using data segments

ABSTRACT

Systems and methods for generating synthetic data are disclosed. For example, a system may include one or more memory units storing instructions and one or more processors configured to execute the instructions to perform operations. The operations may include receiving a dataset including time-series data. The operations may include generating a plurality of data segments based on the dataset, determining respective segment parameters of the data segments, and determining respective distribution measures of the data segments. The operations may include training a parameter model to generate synthetic segment parameters. Training the parameter model may be based on the segment parameters. The operations may include training a distribution model to generate synthetic data segments. Training the distribution model may be based on the distribution measures and the segment parameters. The operations may include generating a synthetic dataset using the parameter model and the distribution model and storing the synthetic dataset.

CROSS REFERENCE TO RELATED APPLICATIONS

This application claims the benefit of U.S. Provisional Application No. 62/694,968, filed Jul. 6, 2018, the content of which is expressly incorporated herein by reference in its entirety.

BACKGROUND

Data management systems have a need to efficiently manage and generate synthetic time-series data that appear realistic (i.e., appears to be actual data). Synthetic data includes, for example, anonymized actual data or fake data. Synthetic data is used in a wide variety of fields and systems, including public health systems, financial systems, environmental monitoring systems, product development systems, and other systems. Synthetic data may be needed where actual data reflecting real-world conditions, events, and/or measurements are unavailable or where confidentiality is required. Synthetic data may be used in methods of data compression to create or recreate a realistic, larger-scale data set from a smaller, compressed dataset (e.g., as in image or video compression). Synthetic data may be desirable or needed for multidimensional datasets (e.g., data with more than three dimensions).

Conventional systems and methods of generating synthetic time-series data generally suffer from deficiencies. For example, conventional approaches may be limited to generating synthetic data in a small number of dimensions (e.g., two-dimensional image data), but be unable to generate time-series data for higher-dimensional datasets (e.g., environmental data with multiple, interdependent variables). Further, conventional approaches may be unable to produce synthetic data that realistically captures changes in data values over time (e.g., conventional approaches may produce unrealistic video motion).

Conventional systems and methods may be limited to generating synthetic data within an observed range of parameters of actual data (e.g., a series of actual minimum and maximum values), rather than modeled synthetic-parameters (e.g., a series of synthetic minimum and maximum values). Some approaches may use pre-defined data distributions to generate synthetic data, an approach that may require human judgment to choose a data distribution rather than using machine-learning to choose a distribution to generate synthetic data. Some approaches may be limited to generating time-series data in just one direction (e.g., forward in time). Some approaches may be limited to generating data within a limited time scale (e.g., hours, weeks, days, years, etc.) and may not be robust across time scales.

Therefore, in view of the shortcomings and problems with conventional approaches to generating synthetic time-series data, there is a need for robust, unconventional approaches that generate realistic synthetic time-series data.

SUMMARY

The disclosed embodiments provide unconventional methods and systems for generating synthetic time-series data. As compared to conventional solutions, the embodiments may quickly generate accurate, synthetic multi-dimensional time-series data at least because methods may involve machine learning methods to optimize segment parameters and distribution measures of data segments at various time scales.

Consistent with the present embodiments, a system for generating synthetic datasets is disclosed. The system may include one or more memory units storing instructions and one or more processors configured to execute the instructions to perform operations. The operations may include receiving a dataset comprising time-series data. The operations may include generating a plurality of data segments based on the dataset, determining respective segment parameters of the data segments, and determining respective distribution measures of the data segments. The operations may include training a parameter model to generate synthetic segment parameters. Training the parameter model may be based on the segment parameters. The operations may include training a distribution model to generate synthetic data segments. Training the distribution model may be based on the distribution measures and the segment parameters. The operations may include generating a synthetic dataset using the parameter model and the distribution model and storing the synthetic dataset.

Consistent with the present embodiments, a method for generating synthetic datasets is disclosed. The method may include receiving a dataset comprising time-series data. The method may include generating a plurality of data segments based on the dataset, determining respective segment parameters of the data segments, and determining respective distribution measures of the data segments. The method may include training a parameter model to generate synthetic segment parameters. Training the parameter model may be based on the segment parameters. The method may include training a distribution model to generate synthetic data segments. Training the distribution model may be based on the distribution measures and the segment parameters. The method may include generating a synthetic dataset using the parameter model and the distribution model and storing the synthetic dataset.

Consistent with the present embodiments, non-transitory computer readable storage media may store program instructions, which are executed by at least one processor device and perform any of the methods described herein.

The disclosed systems and methods may be implemented using a combination of conventional hardware and software as well as specialized hardware and software, such as a machine constructed and/or programmed specifically for performing functions associated with the disclosed method steps. The foregoing general description and the following detailed description are exemplary and explanatory only and are not restrictive of the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate several embodiments and, together with the description, serve to explain the disclosed principles. In the drawings:

FIG. 1 depicts an exemplary system for generating synthetic data, consistent with disclosed embodiments.

FIG. 2A and FIG. 2B illustrate an exemplary method of segmenting and parameterizing a dataset to generate synthetic data, consistent with disclosed embodiments.

FIG. 3 depicts an exemplary synthetic-data system, consistent with disclosed embodiments.

FIG. 4 depicts an exemplary process for training a parameter model and a distribution model, consistent with disclosed embodiments.

FIG. 5 depicts an exemplary process for generating synthetic data, consistent with disclosed embodiments.

FIG. 6 depicts an exemplary process for training a distribution model, consistent with disclosed embodiments.

FIG. 7 depicts an exemplary process for training a parameter model, consistent with disclosed embodiments.

FIG. 8 depicts an exemplary process for recursive training of a parameterizing model and distribution model, consistent with disclosed embodiments.

FIG. 9 depicts an exemplary process for generating synthetic data based on a request, consistent with disclosed embodiments.

DESCRIPTION OF THE EMBODIMENTS

Consistent with disclosed embodiments, systems and methods to generate synthetic data are disclosed.

Embodiments consistent with the present disclosure may include datasets. Datasets may comprise actual data reflecting real-world conditions, events, and/or measurements. In some embodiments, disclosed systems and methods may fully or partially involve synthetic data (e.g., anonymized actual data or fake data). Datasets may involve time-series data, numeric data, text data, and/or image data. For example, datasets may include transaction data, financial data, demographic data, public data, government data, environmental data, traffic data, network data, transcripts of video data, genomic data, proteomic data, and/or other data.

Datasets may have a plurality of dimensions, the dimensions corresponding to variables. For example, a dataset may include a time series of three-dimensional spatial data. Datasets of the embodiments may have any number of dimensions. As an illustrative example, datasets of the embodiments may include time-series data with dimensions corresponding to longitude, latitude, cancer incidence, population density, air quality, and water quality. Datasets of the embodiments may be in a variety of data formats including, but not limited to, PARQUET, AVRO, SQLITE, POSTGRESQL, MYSQL, ORACLE, HADOOP, CSV, JSON, PDF, JPG, BMP, and/or other data formats.

Datasets of disclosed embodiments may have a respective data schema (i.e., structure), including a data type, key-value pair, label, metadata, field, relationship, view, index, package, procedure, function, trigger, sequence, synonym, link, directory, queue, or the like. Datasets of the embodiments may contain foreign keys, i.e., data elements that appear in multiple datasets and may be used to cross-reference data and determine relationships between datasets. Foreign keys may be unique (e.g., a personal identifier) or shared (e.g., a postal code). Datasets of the embodiments may be “clustered,” i.e., a group of datasets may share common features, such as overlapping data, shared statistical properties, etc. Clustered datasets may share hierarchical relationships (i.e., data lineage).

Reference will now be made in detail to exemplary embodiments, examples of which are illustrated in the accompanying drawings and disclosed herein. Wherever convenient, the same reference numbers will be used throughout the drawings to refer to the same or like parts. The disclosed embodiments are described in sufficient detail to enable those skilled in the art to practice the disclosed embodiments. It is to be understood that other embodiments may be utilized and that changes may be made without departing from the scope of the disclosed embodiments. Thus, the materials, methods, and examples are illustrative only and are not intended to be necessarily limiting.

FIG. 1 depicts exemplary system 100 for generating synthetic datasets, consistent with disclosed embodiments. As shown, system 100 may include a synthetic-data system 102, a model storage 104, a dataset database 106, a remote database 108, and a client device 110. Components of system 100 may be connected to each other through a network 112.

In some embodiments, aspects of system 100 may be implemented on one or more cloud services designed to generate (“spin-up”) one or more ephemeral container instances (e.g., AMAZON LAMBDA instances) in response to event triggers, assign one or more tasks to a container instance, and terminate (“spin-down”) a container instance upon completion of a task. By implementing methods using cloud services, disclosed systems may efficiently provision resources based on demand and provide security advantages because the ephemeral container instances may be closed and destroyed upon completion of a task. That is, the container instances do not permit access from outside using terminals or remote shell tools like SSH, RTP, FTP, or CURL, for example. Further, terminating container instances may include destroying data, thereby protecting sensitive data. Destroying data can provide security advantages because it may involve permanently deleting data (e.g., overwriting data) and associated file pointers.

As will be appreciated by one skilled in the art, the components of system 100 may be arranged in various ways and implemented with any suitable combination of hardware, firmware, and/or software, as applicable. For example, as compared to the depiction in FIG. 1, system 100 may include a larger or smaller number of synthetic-data systems, model storages, dataset databases, remote databases, client devices and/or networks. In addition, system 100 may further include other components or devices not depicted that perform or assist in the performance of one or more processes, consistent with the disclosed embodiments. The exemplary components and arrangements shown in FIG. 1 are not intended to limit the disclosed embodiments.

Synthetic-data system 102 may include a computing device, a computer, a server, a server cluster, a plurality of server clusters, and/or a cloud service, consistent with disclosed embodiments. Synthetic-data system 102 may include one or more memory units and one or more processors configured to perform operations consistent with disclosed embodiments. Synthetic-data system 102 may include computing systems configured to generate, receive, retrieve, store, and/or provide data models and/or datasets, consistent with disclosed embodiments. Synthetic-data system 102 may include computing systems configured to generate and train models, consistent with disclosed embodiments. Synthetic-data system 102 may be configured to receive data from, retrieve data from, and/or transmit data to other components of system 100 and/or computing components outside system 100 (e.g., via network 112). Synthetic-data system 102 is disclosed in greater detail below (in reference to FIG. 3).

Model storage 104 may be hosted on one or more servers, one or more clusters of servers, or one or more cloud services. Model storage 104 may be connected to network 112 (connection not shown). In some embodiments, model storage 104 may be a component of synthetic-data system 102 (not shown).

Model storage 104 may include one or more databases configured to store data models (e.g., machine-learning models or statistical models) and descriptive information of data models. Model storage 104 can be configured to provide information regarding available data models to a user or another system. Databases may include cloud-based databases, cloud-based buckets, or on-premises databases. The information may include model information, such as the type and/or purpose of a model and any measures of classification error. Model storage 104 may include one or more databases configured to store indexed and clustered models for use by synthetic-data system 100. For example, model storage 104 may store models associated with generalized representations of those models (e.g., neural network architectures stored in TENSORFLOW or other standardized formats). Databases may include cloud-based databases (e.g., AMAZON WEB SERVICES RELATIONAL DATABASE SERVICE) or on-premises databases. Model storage 104 may include a searchable model index (e.g, a B-Tree or other index). The index may be based on model characteristics (e.g., model type, model parameters, model hyperparameters).

Dataset database 106 may include one or more databases configured to store data for use by system 100, consistent with disclosed embodiments. In some embodiments, dataset database may be configured to store datasets and/or one or more dataset indexes, consistent with disclosed embodiments. Dataset database 106 may include a cloud-based database (e.g., AMAZON WEB SERVICES RELATIONAL DATABASE SERVICE) or an on-premises database. Dataset database 106 may include datasets, model data (e.g., model parameters, training criteria, performance metrics, etc.), and/or other data, consistent with disclosed embodiments. Dataset database 106 may include data received from one or more components of system 100 and/or computing components outside system 100 (e.g., via network 112). In some embodiments, dataset database 106 may be a component of synthetic-data system 102 (not shown). Dataset database 106 may include a searchable index of datasets, the index being based on data profiles of datasets (e.g, a B-Tree or other index).

Remote database 108 may include one or more databases configured to store data for use by system 100, consistent with disclosed embodiments. Remote database 108 may be configured to store datasets and/or one or more dataset indexes, consistent with disclosed embodiments. Remote database 108 may include a cloud-based database (e.g., AMAZON WEB SERVICES RELATIONAL DATABASE SERVICE) or an on-premises database.

Client device 110 may include one or more memory units and one or more processors configured to perform operations consistent with disclosed embodiments. In some embodiments, client device 110 may include hardware, software, and/or firmware modules. Client device 110 may include a mobile device, a tablet, a personal computer, a terminal, a kiosk, a server, a server cluster, a cloud service, a storage device, a specialized device configured to perform methods according to disclosed embodiments, or the like.

At least one of synthetic-data system 102, model storage 104, dataset database 106, remote database 108, or client device 110 may be connected to network 112. Network 112 may be a public network or private network and may include, for example, a wired or wireless network, including, without limitation, a Local Area Network, a Wide Area Network, a Metropolitan Area Network, an IEEE 1002.11 wireless network (e.g., “Wi-Fi”), a network of networks (e.g., the Internet), a land-line telephone network, or the like. Network 112 may be connected to other networks (not depicted in FIG. 1) to connect the various system components to each other and/or to external systems or devices. In some embodiments, network 112 may be a secure network and require a password to access the network.

FIG. 2A and FIG. 2B illustrate exemplary method 200 of segmenting a dataset to generate synthetic data, consistent with disclosed embodiments. FIG. 2A and FIG. 2B provide a graphical depiction of phases 202 through 212 of a method to segment a dataset. As shown, a dataset may comprise at least one dimension of time-series data, with time graphed on a horizontal axis and the value of the time-series data on a vertical axis. In the method 200, a dataset may include environmental data, financial data, energy data, water data, health data, and/or any other type of data.

FIG. 2A and FIG. 2B are provided for purposes of illustration only and are not intended to be limiting on the embodiments. As one of skill in the art will appreciate, embodiments may include methods of segmenting a dataset which differ from exemplary method 200. For example, datasets of the embodiments may include more than one dimension of time-series data and methods may include segmenting multiple dimensions of a dataset. In addition, time-series data of embodiments consistent with the present disclosure may have statistical properties which differ from those depicted in FIG. 2A and FIG. 2B.

At phase 202, synthetic-data system 102 may receive a dataset comprising time-series data, consistent with disclosed embodiments. In some embodiments, synthetic data-generating system 102 may receive a dataset from another component of system 100 (e.g., client device 110) and/or a computing component outside system 100 (e.g., via interface 322 (described in further detail below)). In some embodiments, receiving a dataset includes retrieving a dataset from a data storage (e.g., from data 331 (described in further detail below), dataset database 106, and/or remote database 108).

At phase 204, synthetic-data system 102 may generate data segments of a dataset, determine segment parameters, and/or determine distribution measures, consistent with disclosed embodiments. By way of example, at phase 204, synthetic-data system 102 may generate three data segments from a dataset as illustrated by vertical dividing lines. Consistent with disclosed embodiments, phase 204 may include generating any number of data segments from a dataset, for example thousands, millions, or even more data segments (not depicted).

In some embodiments, the size (i.e., length in the time dimension) of data segments may be based on a predetermined segment size. In some embodiments, synthetic-data system 102 may determine a segment size at step 204 based on a statistical metric of a dataset. For example, synthetic-data system 102 may determine that a dataset exhibits periodic (e.g., cyclic) behavior and segment the dataset based on a period of the dataset. Synthetic-data system 102 may implement univariate or multivariate statistical method to determine a period of a dataset. Synthetic-data system 102 may implement a transform method (e.g., Fourier Transform), check for repeating digits (e.g., integers), or other method of determining a period of a dataset. In some embodiments, synthetic-data system 102 trains or implements a machine learning model to determine a data segment size (e.g., as disclosed in reference to FIG. 7).

Phase 204 may include generating data segments of equal segment size (i.e., equal length in the time dimension). In some embodiments, phase 204 may include generating data segments of unequal segment size (i.e., unequal length in the time dimension). For example, phase 204 may include generating a plurality of data-segments based on a statistical characteristic of a dataset (e.g., identifying data regions with local minima and maxima, and segmenting data according to the local minima and maxima). Phase 204 may include training a machine learning model to determine segment size of a data segment, consistent with disclosed embodiments.

Phase 204 may include determining segment parameters of one or more data segments, consistent with disclosed embodiments. As illustrated by horizontal dashed lines in FIG. 2A, segment parameters may include a minimum and a maximum of a data segment. In some embodiments, phase 204 may include determining a minimum, a maximum, a median, an average, a start value, an end value, a variance, a standard deviation, and/or any other segment parameter. In some embodiments, phase 204 may include determining a sequence of parameters corresponding to a plurality of data segments.

Phase 204 may include determining distribution measures of one or more data segments, consistent with disclosed embodiments. In some embodiments, a distribution measure may include a moment of one or more data segments (e.g., a mean, a variance or standard deviation, a skewness, a kurtosis, etc.). In some embodiments, determining a distribution measure may be associated with a normalized distribution, a gaussian distribution, a Bernoulli distribution, a binomial distribution, a normal distribution, a Poisson distribution, an exponential distribution, and/or any other data distribution. In some embodiments, a distribution measure may include a regression result of a time-dependent function applied to one or more data segments (e.g., a linear function or exponential growth function). The regression result may include a slope, an exponential factor, a goodness of fit measure (e.g., an R-squared value), or the like.

At phase 206, synthetic-data system 102 may generate data segments of a dataset, determine segment parameters, and/or determine distribution measures, consistent with disclosed embodiments. In some embodiments, synthetic-data system 102 may recursively generate data-segments at phase 206 within previously generated data segments (i.e., for a smaller time scale). As shown by way of example in FIG. 2, phase 206 may include subdividing data segments generated in phase 204 (located between thick vertical lines) into smaller data segments (located between thin vertical lines). For example, a dataset may include time-series temperature data, and phase 204 may represent segmenting the dataset into data-segments corresponding to monthly time intervals (i.e., the segment size may be one-month), while phase 206 may include generating data segments corresponding to weekly or daily time intervals.

Phase 206 may include determining segment parameters, consistent with disclosed embodiments. Phase 206 may include determining distribution measures, consistent with disclosed embodiments.

As one of skill in the art will appreciate, phase 206 may performed recursively any number of times at various time scales. That is, phase 206 may include repeatedly subdividing previously generated data segments, determining segment parameters of the subdivisions, and determining distribution measures of the subdivisions, consistent with disclosed embodiments. For example, phase 206 may include generating sequences of data segments corresponding to monthly, weekly, daily, and hourly data segments.

At phase 208, synthetic-data system 102 may train a parameter model to generate synthetic segment-parameters, consistent with disclosed embodiments. At phase 208, FIG. 2B illustrates synthetic segment-parameters generated by a parameter model. By way of example, horizontal lines representing minimum and maximum values are represented in the figure. A parameter model may include a machine learning model, consistent with disclosed embodiments. In some embodiments, synthetic-data system 102 may train a parameter model to generate synthetic segment-parameters based on segment parameters determined in phase 204.

Model training in phase 208 may include training a parameter model based on a performance metric (e.g., a performance score). A performance metric may include a similarity metric of synthetic segment-parameters and segment parameters. For example, a similarity metric may include determining whether, within a tolerance, a statistical metric of synthetic segment-parameters match a statistical metric of segment-parameters. In some embodiments, the similarity metric may include a comparison of an autocorrelation of segment parameters to an autocorrelation of synthetic segment-parameters, a comparison of a distribution of segment parameters to a distribution of synthetic segment-parameters, a comparison of a covariance of segment parameters to a covariance of synthetic segment-parameters, a comparison of an average of synthetic segment-parameters to an average of segment parameters, and/or any other comparison of a statistical metric of synthetic segment-parameters to a statistical metric of segment parameters.

At phase 210, synthetic-data system 102 may train a parameter model to generate synthetic segment-parameters, consistent with disclosed embodiments. As shown, phase 210 may include generating synthetic-data segment parameters within previously generated segment parameters (i.e., recursive synthetic data-segments). The parameter model of phase 210 may be the same parameter model of phase 208 or a different parameter model. In some embodiments, training at phase 210 may be based on data segments generated during phase 206. For example, synthetic data system 102 may trained a parameter model to generate synthetic monthly time-series data at phase 208 and may train the same or a different parameter model to generate synthetic daily monthly time-series data at phase 210.

At phase 212, synthetic-data system 102 may train a distribution model to generate synthetic data-segments based on synthetic segment-parameters, consistent with disclosed embodiments. Phase 212 may include training one or more distribution models to generate synthetic data-segments based on the synthetic segment-parameters of phase 208 and/or synthetic segment-parameters of phase 210. In some embodiments, phase 212 includes training a distribution model to accept synthetic parameters as inputs and generate synthetic data-segments that meet a performance metric. A performance metric may be based on a similarity metric of a data segment to a synthetic data segment generated by a distribution model. A similarity metric at phase 212 may be based on a comparison of synthetic distribution-measures of phase 212 to distribution measures of phase 204 or 206. A performance metric may be based on a statistical metric of a data segment and/or a synthetic data segment. For example, a performance metric may be based on a correlation (e.g., an autocorrelation or a correlation of data in two or more dimensions of a data segment).

At phase 214, synthetic-data system 102 may generate a synthetic dataset, consistent with disclosed embodiments. In some embodiments, phase 214 may include performing steps of process 500 (described in further detail below), consistent with disclosed embodiments. In some embodiments, generating a synthetic dataset at phase 214 includes generating a sequence of synthetic segment parameters via the parameter model. In some embodiments, generating a synthetic dataset at phase 214 may include generating, via a distribution model, a sequence of synthetic data-segment based on synthetic segment parameters. In some embodiments, generating a synthetic dataset at phase 214 may include combining synthetic data-segments (e.g., combining in two or more dimensions, appending and/or prepending data).

FIG. 3 depicts exemplary synthetic-data system 102, consistent with disclosed embodiments. Synthetic-data system 102 may include a computing device, a computer, a server, a server cluster, a plurality of clusters, and/or a cloud service, consistent with disclosed embodiments. As shown, synthetic-data system 102 may include one or more processors 310, one or more I/O devices 320, and one or more memory units 330. In some embodiments, some or all components of synthetic-data system 102 may be hosted on a device, a computer, a server, a cluster of servers, or a cloud service. In some embodiments, synthetic-data system 102 may be a scalable system configured to efficiently manage resources and enhance security by provisioning computing resources in response to triggering events and terminating resources after completing a task (e.g., a scalable cloud service that spins up and terminates container instances).

FIG. 3 depicts an exemplary configuration of synthetic-data system 102. As will be appreciated by one skilled in the art, the components and arrangement of components included in synthetic-data system 102 may vary. For example, as compared to the depiction in FIG. 3, synthetic-data system 102 may include a larger or smaller number of processors, I/O devices, or memory units. In addition, synthetic-data system 102 may further include other components or devices not depicted that perform or assist in the performance of one or more processes consistent with the disclosed embodiments. The components and arrangements shown in FIG. 3 are not intended to limit the disclosed embodiments, as the components used to implement the disclosed processes and features may vary.

Processor 310 may comprise known computing processors, including a microprocessor. Processor 310 may constitute a single-core or multiple-core processor that executes parallel processes simultaneously. For example, processor 310 may be a single-core processor configured with virtual processing technologies. In some embodiments, processor 310 may use logical processors to simultaneously execute and control multiple processes. Processor 310 may implement virtual machine technologies, or other known technologies to provide the ability to execute, control, run, manipulate, store, etc., multiple software processes, applications, programs, etc. In another embodiment, processor 310 may include a multiple-core processor arrangement (e.g., dual core, quad core, etc.) configured to provide parallel processing functionalities to allow execution of multiple processes simultaneously. One of ordinary skill in the art would understand that other types of processor arrangements could be implemented that provide for the capabilities disclosed herein. The disclosed embodiments are not limited to any type of processor. Processor 310 may execute various instructions stored in memory 330 to perform various functions of the disclosed embodiments described in greater detail below. Processor 310 may be configured to execute functions written in one or more known programming languages.

I/O devices 320 may include at least one of a display, an LED, a router, a touchscreen, a keyboard, a microphone, a speaker, a haptic device, a camera, a button, a dial, a switch, a knob, a transceiver, an input device, an output device, or another I/O device to perform methods of the disclosed embodiments. I/O devices 320 may be components of an interface 322 (e.g., a user interface).

Interface 322 may be configured to manage interactions between system 100 and other systems using network 112. In some aspects, interface 322 may be configured to publish data received from other components of system 100. This data may be published in a publication and subscription framework (e.g., using APACHE KAFKA), through a network socket, in response to queries from other systems, or using other known methods. Data may be synthetic data, as described herein. As an additional example, interface 322 may be configured to provide information received from other components of system 100 regarding datasets. In various aspects, interface 322 may be configured to provide data or instructions received from other systems to components of system 100. For example, interface 322 may be configured to receive instructions for generating data models (e.g., type of data model, data model parameters, training data indicators, training parameters, or the like) from another system and provide this information to programs 335. As an additional example, interface 322 may be configured to receive data including sensitive data from another system (e.g., in a file, a message in a publication and subscription framework, a network socket, or the like) and provide that data to programs 335 or store that data in, for example, data 331, dataset database 106, and/or remote database 108.

In some embodiments, interface 322 may include a user interface configured to receive user inputs and provide data to a user (e.g., a data manager). For example, interface 322 may include a display, a microphone, a speaker, a keyboard, a mouse, a track pad, a button, a dial, a knob, a printer, a light, an LED, a haptic feedback device, a touchscreen and/or other input or output devices.

Memory 330 may be a volatile or non-volatile, magnetic, semiconductor, optical, removable, non-removable, or other type of storage device or tangible (i.e., non-transitory) computer-readable medium, consistent with disclosed embodiments. As shown, memory 330 may include data 331, including one of at least one of encrypted data or unencrypted data. Consistent with disclosed embodiments, data 331 may include datasets, model data (e.g., model parameters, training criteria, performance metrics, etc.), and/or other data.

Programs 335 may include one or more programs (e.g., modules, code, scripts, or functions) used to perform methods consistent with disclosed embodiments. Programs may include operating systems (not shown) that perform known operating system functions when executed by one or more processors. Disclosed embodiments may operate and function with computer systems running any type of operating system. Programs 335 may be written in one or more programming or scripting languages. One or more of such software sections or modules of memory 330 may be integrated into a computer system, non-transitory computer-readable media, or existing communications software. Programs 335 may also be implemented or replicated as firmware or circuit logic.

Programs 335 may include a model optimizer 336, a data profiler 337, a segmenter 338, and/or other components (e.g., modules) not depicted to perform methods of the disclosed embodiments. In some embodiments, modules of programs 335 may be configured to generate (“spin up”) one or more ephemeral container instances (e.g., an AMAZON LAMBDA instance) to perform a task and/or to assign a task to a running (warm) container instance, consistent with disclosed embodiments. Modules of programs 335 may be configured to receive, retrieve, and/or generate models, consistent with disclosed embodiments. Modules of programs 335 may be configured to perform operations in coordination with one another. In some embodiments, programs 335 may be configured to conduct an authentication process, consistent with disclosed embodiments.

Model optimizer 336 may include programs (scripts, functions, algorithms) to train, implement, store, receive, retrieve, and/or transmit one or more machine-learning models. Machine-learning models may include a neural network model, an attention network model, a generative adversarial model (GAN), a recurrent neural network (RNN) model, a deep learning model (e.g., a long short-term memory (LSTM) model), a random forest model, a convolutional neural network (CNN) model, an RNN-CNN model, a temporal-CNN model, a support vector machine (SVM) model, a natural-language model, and/or another machine-learning model. Models may include an ensemble model (i.e., a model comprised of a plurality of models). In some embodiments, training of a model may terminate when a training criterion is satisfied. Training criterion may include a number of epochs, a training time, a performance metric (e.g., an estimate of accuracy in reproducing test data), or the like. Model optimizer 336 may be configured to adjust model parameters during training. Model parameters may include weights, coefficients, offsets, or the like. Training may be supervised or unsupervised.

Model optimizer 336 may be configured to train machine learning models by optimizing model parameters and/or hyperparameters (hyperparameter tuning) using an optimization technique, consistent with disclosed embodiments. Hyperparameters may include training hyperparameters, which may affect how training of a model occurs, or architectural hyperparameters, which may affect the structure of a model. An optimization technique may include a grid search, a random search, a gaussian process, a Bayesian process, a Covariance Matrix Adaptation Evolution Strategy (CMA-ES), a derivative-based search, a stochastic hill-climb, a neighborhood search, an adaptive random search, or the like. Model optimizer 336 may be configured to optimize statistical models using known optimization techniques.

In some embodiments, model optimizer 336 may be configured to generate models based on instructions received from another component of system 100 and/or a computing component outside system 100 (e.g., via interface 322, from client device 110, etc.). For example, model optimizer 336 may be configured to receive a visual (graphical) depiction of a machine learning model and parse that graphical depiction into instructions for creating and training a corresponding neural network. Model optimizer 336 may be configured to select model training parameters. This selection may be based on model performance feedback received from another component of system 100. Model optimizer 336 may be configured to provide trained models and descriptive information concerning the trained models to model storage 104.

Model optimizer 336 may be configured to train data models to generate synthetic data based on an input dataset (e.g., a dataset comprising actual data). For example, model optimizer 336 may be configured to train data models to generate synthetic data by identifying and replacing sensitive information in a dataset. In some embodiments, model optimizer 336 may be configured to train data models to generate synthetic data based on a data profile (e.g., a data schema and/or a statistical profile of a dataset). For example, model optimizer 336 may be configured to train data models to generate synthetic data to satisfy a performance metric. A performance metric may be based on a similarity metric representing a measure of similarity between a synthetic dataset and another dataset.

Model optimizer 336 may be configured to maintain a searchable model index (e.g, a B-Tree or other index). The index may be based on model characteristics (e.g., model type, model parameters, model hyperparameters). The index may be stored in, for example, data 331 or model storage 104.

Data profiler 337 may include programs configured to retrieve, store, and/or analyze properties of data models and datasets. For example, data profiler 337 may include or be configured to implement one or more data-profiling models. A data-profiling model may include machine-learning models and statistical models to determine a data schema and/or a statistical profile of a dataset (i.e., to profile a dataset), consistent with disclosed embodiments. A data-profiling model may include an RNN model, a CNN model, or other machine-learning model.

In some embodiments, data profiler 337 may include algorithms to determine a data type, key-value pairs, row-column data structure, statistical distributions of information such as keys or values, or other property of a data schema may be configured to return a statistical profile of a dataset (e.g., using a data-profiling model). In some embodiments, data profiler 337 may be configured to implement univariate and multivariate statistical methods. Data profiler 337 may include a regression model, a Bayesian model, a statistical model, a linear discriminant analysis model, or other classification model configured to determine one or more descriptive metrics of a dataset. For example, data profiler 337 may include algorithms to determine an average, a mean, a standard deviation, a quantile, a quartile, a probability distribution function, a range, a moment, a variance, a covariance, a covariance matrix, a dimension and/or dimensional relationship (e.g., as produced by dimensional analysis such as length, time, mass, etc.) or any other descriptive metric of a dataset.

In some embodiments, data profiler 337 may be configured to return a statistical profile of a dataset (e.g., using a data-profiling model or other model). A statistical profile may include a plurality of descriptive metrics. For example, the statistical profile may include an average, a mean, a standard deviation, a range, a moment, a variance, a covariance, a covariance matrix, a similarity metric, or any other statistical metric of the selected dataset. In some embodiments, data profiler 337 may be configured to generate a similarity metric representing a measure of similarity between data in a dataset. A similarity metric may be based on a correlation, covariance matrix, a variance, a frequency of overlapping values, or other measure of statistical similarity.

In some embodiments, data profiler 337 may be configured to classify a dataset. Classifying a dataset may include determining whether a data-set is related to another datasets. Classifying a dataset may include clustering datasets and generating information indicating whether a dataset belongs to a cluster of datasets. In some embodiments, classifying a dataset may include generating data describing a dataset (e.g., a dataset index), including metadata, an indicator of whether data element includes actual data and/or synthetic data, a data schema, a statistical profile, a relationship between the test dataset and one or more reference datasets (e.g., node and edge data), and/or other descriptive information. Edge data may be based on a similarity metric. Edge data may indicate a similarity between datasets and/or a hierarchical relationship (e.g., a data lineage, a parent-child relationship). In some embodiments, classifying a dataset may include generating graphical data, such as a node diagram, a tree diagram, or a vector diagram of datasets. Classifying a dataset may include estimating a likelihood that a dataset relates to another dataset, the likelihood being based on the similarity metric.

Data profiler 337 may be configured to classify a dataset based on data-model output, consistent with disclosed embodiments. For example, data profiler 337 may be configured to classify a dataset based on a statistical profile of a distribution of activation function values. In some embodiments, data profiler 337 may be configured to classify a dataset at least one of an edge, a foreign key, a data schema, or a similarity metric, consistent with disclosed embodiments. In some embodiments, the similarity metric may represent a statistical similarity between data-model output of a first dataset and a second dataset, consistent with disclosed embodiments. As another example, data classification module may classify a dataset as a related dataset based on determination that a similarity metric between a dataset and a previously classified dataset satisfies a criterion.

Data profiler 337 m may be configured to maintain a searchable dataset index (e.g, a B-Tree or other index). The index may be based on data profiles. The index may be stored in, for example, data 331 or dataset database 106.

Segmenter 338 may be configured to generate data segments, determine segment parameters, generate synthetic segment-parameters, determine a distribution measure of a data segment, and/or generate synthetic data-segments, consistent with disclosed embodiments. Segmenter 338 may be configured to generate a plurality of data segments based on a dataset. In some embodiments, generating a data segment may be based on a segment size (e.g., a length of time). A segment size may be a pre-determined segment size (e.g., monthly segments). In some embodiments, segmenter 338 may be configured to determine a segment size on a statistical metric of a dataset. For example, segmenter 338 may be configured to determine that a dataset exhibits periodic behavior and segment the dataset based on a period of the dataset. Segmenter 338 may be configured to implement univariate or multivariate statistical method to determine a period of a dataset. Segmenter 338 may be configured to implement a transform method (e.g., Fourier Transform), check for repeating digits (e.g., integers), or other method of determining a period of a dataset. In some embodiments, segmenter 338 may be configured to train or implement a machine learning model to determine a data segment size, consistent with disclosed embodiments. In some embodiments, the segment sizes of consecutive segment may be non-uniform. For example, the segment sizes of two-neighboring data segments may differ from each other.

Segmenter 338 may be configured to determine segment parameters (i.e. parameters of data segments) including a minimum, a maximum, a median, an average, a start value, an end value, a variance, a standard deviation, and/or any other segment parameter. Segmenter 338 may be configured to implement any known statistical method to determine a segment parameter.

Segmenter 338 may be configured to generate synthetic segment-parameters based on segment parameters (i.e., using segment parameters as training data), consistent with disclosed embodiments. In some embodiments, segmenter 338 may be configured to generate, retrieve, train, and/or implement a parameter model, consistent with disclosed embodiments. For example, segmenter 338 may be configured to train a parameter model in coordination with model optimizer 336 and/or may be configured to send commands to model optimizer 336 to train a parameter model. A parameter model may include a machine learning model configured to generate synthetic segment-parameters based on segment parameters. For example, a parameter model may be configured to generate a sequence of synthetic minimum values of data segments and a sequence of synthetic maximum values of data segments. A parameter model may include a recurrent neural network model, a long short-term memory model, or any other machine learning model.

In some embodiments, segmenter 338 may be configured to train a parameter model to generate a sequence of any number of synthetic data parameters going forwards or backwards in time from an initial starting point. In some embodiments, segmenter 338 may be configured to train a parameter model to generate a plurality of synthetic segment-parameters based on a segment-parameter seed (e.g., a random seed or a segment parameter).

Segmenter 338 may be configured to train a parameter model based on a performance metric. The performance metric may include a similarity metric of synthetic segment parameters and segment-parameters. For example, a similarity metric may include determining whether, within a tolerance, a statistical metric of synthetic segment-parameters match a statistical metric of segment-parameters. In some embodiments, the similarity metric may include a comparison of an autocorrelation of segment parameters to an autocorrelation of synthetic segment-parameters, a comparison of a distribution of segment parameters to a distribution of synthetic segment-parameters, a comparison of a covariance of segment parameters to a covariance of synthetic segment-parameters, a comparison of an average of synthetic segment-parameters to an average of segment parameters, and/or any other comparison of a statistical metric of synthetic segment-parameters to a statistical metric of segment parameters.

Segmenter 338 may be configured to determine a distribution measure of a data segment, consistent with disclosed embodiments. For example, segmenter 338 may be configured to a distribution measure may include distribution parameters of a distribution that fits to a data segment. For example, segmenter 338 may be configured to generate goodness of fit measures for a plurality of candidate distributions and distribution measures based on to one or more data segments. In some embodiments, a distribution measure includes a moment of one or more data segments (e.g., a mean, a variance or standard deviation, a skewness, a kurtosis, etc.). In some embodiments, segmenter 338 may be configured to determine distribution measures associated with a normalized distribution, a gaussian distribution, a Bernoulli distribution, a binomial distribution, a normal distribution, a Poisson distribution, an exponential distribution, and/or any other data distribution. In some embodiments, a distribution measure may include a regression result of a time-dependent function applied to one or more data segments (e.g., a linear function or exponential growth function). The regression result may include a slope, an exponential factor, a goodness of fit measure (e.g., an R-squared value), or the like.

Segmenter 338 may be configured to train a distribution model to generate a synthetic data segment, consistent with disclosed embodiments. A distribution model may include a multilayer perceptron model, a convolutional neural network model, a sequence-to-sequence model, and/or any other machine learning model. For example, segmenter 338 may be configured to train a distribution model in coordination with model optimizer 336 and/or may be configured to send commands to model optimizer 336 to train a distribution model. In some embodiments, segmenter 338 may be configured to train a distribution model to generate a synthetic data segment based on one or more distribution measures and one or more segment parameters. For example, segmenter 338 may be configured to train a distribution model to generate synthetic segment data that falls within a “bounding box” defined by a set of segment parameters (i.e., within a minimum value, a maximum value, a start value, and an end value). As an additional or alternate example, segmenter 338 may be configured to train a distribution model to generate synthetic segment-data that matches an average specified by a segment-parameter. In some embodiments, segmenter 338 may be configured to train a distribution model to accept one or more segment parameters inputs and return synthetic segment data output. For example, segmenter 338 may train a distribution model to accept a sequence of synthetic-segment parameters of a sequence of synthetic data segments.

Segmenter 338 may be configured to train a distribution model based on a performance metric, consistent with disclosed embodiments. A performance metric may be based on a similarity metric of a data segment to a synthetic data segment generated by a distribution model. A performance metric may be based on a statistical metric of a data segment and/or a synthetic data segment. For example, a performance metric may be based on a correlation (e.g., an autocorrelation or a correlation of data in two or more dimensions of a data segment).

Segmenter 338 may be configured to generate a synthetic dataset by combining one or more synthetic data-segments. For example, segmenter 338 may be configured to append and/or prepend synthetic data-segments to generate a synthetic dataset. Segmenter 338 may be configured to combine data segments into a multidimensional synthetic dataset. For example, segmenter may be configured to combine a sequence of data segments comprising stock values with a sequence of data segments comprising employment data.

FIG. 4 depicts an exemplary process 400 for training a parameter model and a distribution model, consistent with disclosed embodiments. In some embodiments, synthetic-data system 102 may perform process 400 using programs 335. One or more of model optimizer 336, data profiler 337, segmenter 338, and/or other components of programs 335 may perform operations of process 400, consistent with disclosed embodiments. It should be noted that other components of system 100, including, for example, client device 110 may perform operations of one or more steps of process 400.

Consistent with disclosed embodiments, steps of process 400 may be performed on one or more cloud services using one or more ephemeral container instances (e.g., AMAZON LAMBDA). For example, at any of the steps of process 400, synthetic-data system 102 may generate (spin up) an ephemeral container instance to execute a task, assign a task to an already-running ephemeral container instance (warm container instance), or terminate a container instance upon completion of a task. As one of skill in the art will appreciate, steps of process 400 may be performed as part of an application interface (API) call.

At step 402, synthetic-data system 102 may receive one or more sample datasets, consistent with disclosed embodiments. In some embodiments, step 402 may include receiving a dataset from data 331, one or more client devices (e.g., client device 110), dataset database 106, remote database 108, and/or a computing component outside system 100. Step 402 may include retrieving a dataset from a data storage (e.g., from data 331, dataset database 106, and/or remote database 108). A dataset of step 402 may include any of the types of datasets previously described or any other type of dataset. A dataset of step 402 may have a range of dimensions, formats, data schema, and/or statistical profiles. A dataset of step 402 may include time-series data.

At step 404, synthetic-data system 102, may generate a data profile of a dataset, consistent with disclosed embodiments. For example, step 404 may include implementing a data profiling model as previously described (e.g., in reference to data profiler 337) or any other methods of generating a data profile.

At step 406, synthetic-data system 102 may generate data segments of a dataset, consistent with disclosed embodiments. Generating data segments may include generating segments according to one or more segment sizes. A segment size may be predetermined. A segment size may be determined by a model based on a statistical property of a data segment, consistent with disclosed embodiments. Generating data segments may include performing any of the methods to generate data segments as previously described (e.g., in reference to segmenter 338) or any other methods of segmenting data.

At step 408, synthetic-data system 102, may determine segment parameters of data segments, consistent with disclosed embodiments. Segment parameters at step 408 may include any segment parameters as previously described (e.g., in reference to segmenter 338) or any other segment parameters. For example, segment parameters may include “bounding box” parameters (i.e., a minimum, a maximum, a start value, and an end value).

At step 410, synthetic-data system 102 may determine distribution measures of data segments, consistent with disclosed embodiments. The distribution measures may include any distribution measures as previously described (e.g., in reference to segmenter 338) or any other distribution measures. For example, distribution measures may include a sequence of means of corresponding to a sequence of data segments, consistent with disclosed embodiments.

At step 412, synthetic-data system 102 may train a parameter model to generate synthetic segment-parameters, the training being based on segment parameters, consistent with disclosed embodiments. For example, the parameter model may be trained based on a performance metric as previously described in reference to segmenter 338. In some embodiments, training a parameter model at step 412 may include performing steps of process 700 (described in further detail below).

At step 414, synthetic-data system 102 may train a distribution model to generate synthetic data-segments based on segment parameters and distribution measures, consistent with disclosed embodiments. For example, the distribution model may be trained based on a performance metric as previously described in reference to segmenter 338. In some embodiments, training a distribution model at step 414 includes performing steps of process 600 (described in further detail below).

At step 416, synthetic-data system 102 may generate a synthetic dataset using a parameter model and a distribution model, consistent with disclosed embodiments. In some embodiments, step 416 may include performing steps of process 500 (described in further detail below), consistent with disclosed embodiments. In some embodiments, generating a synthetic dataset at step 416 may include generating a sequence of synthetic segment parameters via the parameter model. In some embodiments, generating a synthetic dataset at step 416 may include generating, via the distribution model, a sequence of synthetic data-segments based on synthetic segment parameters.

At step 418, synthetic-data system 102 may provide a parameter model, a distribution model, and/or a synthetic dataset consistent with disclosed embodiments. Providing a model or dataset at step 418 may include storing the model or dataset (e.g., in data 331, model storage 104, dataset database 106, and/or remote database 108). Providing a model or dataset may include transmitting the model or dataset to a component of system 100, transmitting the model or dataset to a computing component outside system 100 (e.g., via network 112), and/or displaying the model or dataset (e.g., at interface 322 of I/O 320).

At step 420, synthetic-data system 102 may index a parameter model and/or a distribution model, consistent with disclosed embodiments. Indexing a model may be based on a model type or a characteristic of a model (e.g., a parameter and/or a hyperparameter). Indexing model may include generating, retrieving, and/or updating a model index (e.g., a model index stored in model storage 104 or data 331).

FIG. 5 depicts exemplary process 500 for generating synthetic data, consistent with disclosed embodiments. In some embodiments, synthetic-data system 102 may perform process 500 using programs 335. One or more of model optimizer 336, data profiler 337, segmenter 338, and/or other components of programs 335 may perform operations of process 500, consistent with disclosed embodiments. It should be noted that other components of system 100, including, for example, client device 110 may perform operations of one or more steps of process 500.

Consistent with disclosed embodiments, steps of process 500 may be performed on one or more cloud services using one or more ephemeral container instances (e.g., AMAZON LAMBDA). For example, at any of the steps of process 500, synthetic-data system 102 may generate (spin up) an ephemeral container instance to execute a task, assign a task to an already-running ephemeral container instance (warm container instance), or terminate a container instance upon completion of a task. As one of skill in the art will appreciate, steps of process 500 may be performed as part of an application interface (API) call.

At step 502, synthetic-data system 102 may generate, via a parameter model, synthetic segment-parameters, consistent with disclosed embodiments. For example, a parameter model may generate a sequence of synthetic segment parameters based on a segment-parameter seed or an instruction to generate a random parameter seed. The sequence may extend forward and/or backward in time from the initial segment-parameter seed or random seed. A parameter model of step 502 may include a parameter model previously trained to generate segment parameters (e.g., via process 700 (described in further detail below)).

At step 504, synthetic-data system 102 may generate, via a distribution model, synthetic data-segments based on synthetic segment parameters, consistent with disclosed embodiments. A distribution model of step 504 may include a distribution model previously trained to generate synthetic data segments (e.g., via process 600 (described in further detail below)).

At step 506, synthetic-data system 102 may generate a synthetic dataset by combining synthetic data-segments, consistent with disclosed embodiments. Combining synthetic data-segments may include appending and/or prepending synthetic data segments. Combining synthetic data-segments may include combining synthetic data segments in two or more dimensions, consistent with disclosed embodiments.

FIG. 6 depicts exemplary process 600 for training a distribution model, consistent with disclosed embodiments. In some embodiments, synthetic-data system 102 may perform process 600 using programs 335. One or more of model optimizer 336, data profiler 337, segmenter 338, and/or other components of programs 335 may perform operations of process 600, consistent with disclosed embodiments. It should be noted that other components of system 100, including, for example, client device 110 may perform operations of one or more steps of process 600.

Consistent with disclosed embodiments, steps of process 600 may be performed on one or more cloud services using one or more ephemeral container instances (e.g., AMAZON LAMBDA). For example, at any of the steps of process 600, synthetic-data system 102 may generate (spin up) an ephemeral container instance to execute a task, assign a task to an already-running ephemeral container instance (warm container instance), or terminate a container instance upon completion of a task. As one of skill in the art will appreciate, steps of process 600 may be performed as part of an application interface (API) call.

At step 602, synthetic-data system 102 may generate a synthetic data-segment using a distribution model, consistent with disclosed embodiments. For example, at step 602, synthetic-data system 102 may implement steps of process 500.

At step 604, synthetic-data system 102 may determine synthetic distribution-measures of the synthetic data-segment, consistent with disclosed embodiments. For example, the synthetic distribution-measures may include a moment or a regression result of a time-based function, consistent with disclosed embodiments.

At step 606, synthetic-data system 102 may determine a performance metric of a distribution model, consistent with disclosed embodiments. A performance metric may be based on a similarity metric of a data segment to a synthetic data segment generated by a distribution model at step 604. A similarity metric at step 606 may be based on a comparison of synthetic distribution-measures to distribution measures. A performance metric may be based on a statistical metric of a data segment and/or a synthetic data segment. For example, a performance metric may be based on a correlation (e.g., an autocorrelation or a correlation of data in two or more dimensions of a data segment).

At step 608, synthetic-data system 102 may terminate training of a distribution model based on the performance metric, consistent with disclosed embodiments.

FIG. 7 depicts an exemplary process for training a parameter model, consistent with disclosed embodiments. In some embodiments, synthetic-data system 102 may perform process 700 using programs 335. One or more of model optimizer 336, data profiler 337, segmenter 338, and/or other components of programs 335 may perform operations of process 700, consistent with disclosed embodiments. It should be noted that other components of system 100, including, for example, client device 110 may perform operations of one or more steps of process 700.

Consistent with disclosed embodiments, steps of process 700 may be performed on one or more cloud services using one or more ephemeral container instances (e.g., AMAZON LAMBDA). For example, at any of the steps of process 700, synthetic-data system 102 may generate (spin up) an ephemeral container instance to execute a task, assign a task to an already-running ephemeral container instance (warm container instance), or terminate a container instance upon completion of a task. As one of skill in the art will appreciate, steps of process 700 may be performed as part of an application interface (API) call.

At step 702, synthetic-data system 102 may generate synthetic segment parameters, consistent with disclosed embodiments. Generating synthetic segment-parameters may include generating a sequence of synthetic segment parameters based on a segment-parameter seed. A segment-parameter seed may include a random seed. A segment-parameter seed may include a segment parameter (i.e., a segment parameter determined for a data segment of a received dataset).

At step 704, synthetic-data system 102 may determine synthetic-segment-parameter measures (i.e., measures of a synthetic segment-parameter of step 702), consistent with disclosed embodiments. Synthetic-segment-parameter measures may include any statistical measure of a sequence of synthetic segment-parameters. In some embodiments, synthetic-segment-parameter measures may include a moment of the synthetic segment-parameters (e.g., a mean, a variance or standard deviation, a skewness, a kurtosis). In some embodiments, synthetic-segment-parameter measures may include a correlation (e.g., an autocorrelation of the synthetic segment-parameters and/or a correlation between two dimensions of synthetic segment-parameters).

At step 706, synthetic-data system 102 may determine a performance metric, consistent with disclosed embodiments. A performance metric may be based on a similarity metric of a sequence of segment parameters to a sequence of synthetic segment parameters generated by a parameter model at step 704. A performance metric may be based on a statistical metric of a sequence of segment parameters and/or a synthetic segment parameters. For example, a performance metric may be based on a correlation (e.g., an autocorrelation or a correlation of synthetic segment-parameters in two or more dimensions of a data segment). A performance metric may be based on synthetic-segment-parameter measures (e.g., a similarity metric based on a comparison of synthetic-segment-parameter measures to segment-parameter measures).

At step 708, synthetic-data system 102 may terminate training based on the performance metric, consistent with disclosed embodiments.

FIG. 8 depicts exemplary process 800 for recursive training of a parameterizing model and distribution model, consistent with disclosed embodiments. In some embodiments, synthetic-data system 102 may perform process 800 using programs 335. One or more of model optimizer 336, data profiler 337, segmenter 338, and/or other components of programs 335 may perform operations of process 800, consistent with disclosed embodiments. It should be noted that other components of system 100, including, for example, client device 110 may perform operations of one or more steps of process 800.

Consistent with disclosed embodiments, steps of process 800 may be performed on one or more cloud services using one or more ephemeral container instances (e.g., AMAZON LAMBDA). For example, at any of the steps of process 800, synthetic-data system 102 may generate (spin up) an ephemeral container instance to execute a task, assign a task to an already-running ephemeral container instance (warm container instance), or terminate a container instance upon completion of a task. As one of skill in the art will appreciate, steps of process 800 may be performed as part of an application interface (API) call.

At step 802, synthetic-data system 102 may receive a dataset, consistent with disclosed embodiments. In some embodiments, step 802 may include receiving a dataset from data 331, one or more client devices (e.g., client device 110), dataset database 106, remote database 108, and/or a computing component outside system 100. Step 802 may include retrieving a dataset from a data storage (e.g., from data 331, dataset database 106, and/or remote database 108). A dataset of step 802 may include any of the types of datasets previously described or any other type of dataset. A dataset of step 802 may have a range of dimensions, formats, data schema, and/or statistical profiles. A dataset of step 802 may include time-series data.

In some embodiments, step 802 may include receiving a request, consistent with disclosed embodiments. In some embodiments, step 802 may include receiving a request from data 331, one or more client devices (e.g., client device 110), dataset database 106, remote database 108, and/or a computing component outside system 100. The request may include an instruction to generate a synthetic dataset. In some embodiments, the request may include information relating to a data profile of a desired synthetic dataset (e.g., data describing a data schema and/or a statistical metric of a dataset). Information relating to a data profile of the desired synthetic dataset may include a number of dataset dimensions and/or a dataset format. A desired synthetic dataset may include time-series data. In some embodiments, the request specifies a segment size, a segment-parameter seed, an instruction to generate a random initial parameter, a distribution measure, and/or a segment parameter.

At step 804, synthetic-data system 102 may train a parameter model to generate segment sizes and synthetic segment parameters, consistent with disclosed embodiments. For example, step 804 may include optimizing segment sizes based on segment-parameter measures of synthetic segment parameters generated by the parameter model for data segments corresponding to the segment sizes. Segment sizes at step 804 may be non-uniform.

At step 806, synthetic-data system 102 may train a distribution model to generate synthetic data segments based on the synthetic segment-parameters, consistent with disclosed embodiments. In some embodiments, training a distribution model at step 806 may include performing steps of process 700.

At step 808, synthetic-data system 102 may generate a synthetic dataset, consistent with disclosed embodiments. Generating a synthetic dataset may include performing steps of process 500, consistent with disclosed embodiments. In some embodiments, generating a synthetic dataset may be based on a segment-parameter seed (e.g., a random seed or an initial segment-parameter). In some embodiments, a segment-parameter seed or a command to generate a random segment-parameter seed may be received in the request of step 802. Generating a synthetic dataset may include combining data segments, consistent with disclosed embodiments. Combining data segments at step 808 may include appending and/or prepending data segments. Combining data segments at step 808 may include combining data segments in two or more dimensions.

At step 810, synthetic-data system 102 may determine model performance based on the synthetic dataset, consistent with disclosed embodiments. Determining model performance at step 810 may include generating a similarity metric of the synthetic dataset to a dataset (e.g., a dataset received at step 802).

As shown in FIG. 8, steps 804 through 810 may be repeated any number of times. In some embodiments, steps 804 through 810 may be performed recursively. That is, following step 810 synthetic-data system 102 may generate segment sizes and synthetic segment-parameters within a sequence of previously generated synthetic segment-parameters. For example, synthetic-data system 102 may perform steps 804 through 810 a first time to generate first synthetic data segments (e.g., segments that correspond to the segments illustrated in phase 208 of FIG. 2B), and synthetic-data system 102 may perform steps 804 through 810 a first time to generate second synthetic data segments (e.g., segments that correspond to the segments illustrated in phase 210 of FIG. 2B), etc.

At step 812, synthetic-data system 102 may provide a parameter model, a distribution model, and/or a synthetic dataset consistent with disclosed embodiments. Providing a model or dataset at step 812 may include storing the model or dataset (e.g., in data 331, model storage 104, dataset database 106, and/or remote database 108). Providing a model or dataset may include transmitting the model or dataset to a component of system 100, transmitting the model or dataset to a computing component outside system 100 (e.g., via network 112), and/or displaying the model or dataset (e.g., at interface 322 of I/O 320).

FIG. 9 depicts exemplary process 900 for generating synthetic data based on a request, consistent with disclosed embodiments. In some embodiments, synthetic-data system 102 may perform process 900 using programs 335. One or more of model optimizer 336, data profiler 337, segmenter 338, and/or other components of programs 335 may perform operations of process 900, consistent with disclosed embodiments. It should be noted that other components of system 100, including, for example, client device 110 may perform operations of one or more steps of process 900.

Consistent with disclosed embodiments, steps of process 900 may be performed on one or more cloud services using one or more ephemeral container instances (e.g., AMAZON LAMBDA). For example, at any of the steps of process 900, synthetic-data system 102 may generate (spin up) an ephemeral container instance to execute a task, assign a task to an already-running ephemeral container instance (warm container instance), or terminate a container instance upon completion of a task. As one of skill in the art will appreciate, steps of process 900 may be performed as part of an application interface (API) call.

At step 902, synthetic-data system 102 may receive a request, consistent with disclosed embodiments. In some embodiments, step 902 may include receiving a request from data 331, one or more client devices (e.g., client device 110), dataset database 106, remote database 108, and/or a computing component outside system 100. The request may include a dataset. The request may include an instruction to generate a synthetic dataset. In some embodiments, the request includes information relating to a data profile of a desired synthetic dataset (e.g., data describing a data schema and/or a statistical metric of a dataset). Information relating to a data profile of the desired synthetic dataset may include a number of dataset dimensions and/or a dataset format. A desired synthetic dataset may include time-series data. In some embodiments, the request specifies a segment size, a segment-parameter seed, an instruction to generate a random initial parameter, a distribution measure, and/or a segment parameter.

At step 904, synthetic-data system 102 may generate or receive a data profile of a dataset based on the request, consistent with disclosed embodiments. For example, the request may comprise a data profile or the storage location of a data profile and step 904 may include receiving a data profile as part of the request or from the storage location. In some embodiments, the request includes a dataset and step 904 includes generating a data profile of the dataset.

At step 906, synthetic-data system 102 may retrieve a dataset based on the data profile, consistent with disclosed embodiments. For example, the request may include a data schema and a statistical metric of a dataset, and step 906 may include searching a dataset index to identify and retrieve a dataset with an overlapping data schema and/or a similar statistical metric (e.g., within a tolerance). Step 906 may include retrieving a dataset from data 331, dataset database 106, remote database 108, or another data storage.

At step 908, synthetic-data system 102 may retrieve a parameter model and a distribution model based on the data profile, consistent with disclosed embodiments. Retrieving a model at step 908 may include retrieving a model from data 331, model storage 104, and/or other data storage. Step 908 may include searching a model index (e.g., an index of model storage 104). Such a search may be based on a model parameter, a model hyperparameter, a model type, and/or any other model characteristic.

At step 910, synthetic-data system 102 may train a parameter model and/or a distribution model, consistent with disclosed embodiments. Training a parameter model and/or distribution model at step 910 may include performing steps of process 600, 700, and/or 800.

At step 912, synthetic-data system 102 may generate a synthetic dataset, consistent with disclosed embodiments. Generating a synthetic dataset may include performing steps of process 500, consistent with disclosed embodiments. In some embodiments, generating a synthetic dataset is based on a segment-parameter seed (e.g., a random seed or an initial segment-parameter). In some embodiments, a segment-parameter seed or a command to generate a random segment-parameter seed may be received at step 902. Generating a synthetic dataset may include combining data segments, consistent with disclosed embodiments.

At step 914, synthetic-data system 102 may provide a synthetic dataset, parameter model, and/or distribution model, consistent with disclosed embodiments. Providing a model or dataset at step 914 may include storing the model or dataset (e.g., in data 331, model storage 104, dataset database 106, and/or remote database 108). Providing a model or dataset may include transmitting the model or dataset to a component of system 100, transmitting the model or dataset to a computing component outside system 100 (e.g., via network 112), and/or displaying the model or dataset (e.g., at interface 322 of I/O 320).

Systems and methods disclosed herein involve unconventional improvements over conventional approaches to synthetic data generation. Descriptions of the disclosed embodiments are not exhaustive and are not limited to the precise forms or embodiments disclosed. Modifications and adaptations of the embodiments will be apparent from consideration of the specification and practice of the disclosed embodiments. Additionally, the disclosed embodiments are not limited to the examples discussed herein.

The foregoing description has been presented for purposes of illustration. It is not exhaustive and is not limited to the precise forms or embodiments disclosed. Modifications and adaptations of the embodiments will be apparent from consideration of the specification and practice of the disclosed embodiments. For example, the described implementations include hardware and software, but systems and methods consistent with the present disclosure may be implemented as hardware alone.

Computer programs based on the written description and methods of this specification are within the skill of a software developer. The various functions, scripts, programs, or modules can be created using a variety of programming techniques. For example, programs, scripts, functions, program sections or program modules can be designed in or by means of languages, including JAVASCRIPT, C, C++, JAVA, PHP, PYTHON, RUBY, PERL, BASH, or other programming or scripting languages. One or more of such software sections or modules can be integrated into a computer system, non-transitory computer-readable media, or existing communications software. The programs, modules, or code can also be implemented or replicated as firmware or circuit logic.

Moreover, while illustrative embodiments have been described herein, the scope includes any and all embodiments having equivalent elements, modifications, omissions, combinations (e.g., of aspects across various embodiments), adaptations or alterations based on the present disclosure. The elements in the claims are to be interpreted broadly based on the language employed in the claims and not limited to examples described in the present specification or during the prosecution of the application, which examples are to be construed as non-exclusive. Further, the steps of the disclosed methods can be modified in any manner, including by reordering steps or inserting or deleting steps. It is intended, therefore, that the specification and examples be considered as exemplary only, with a true scope and spirit being indicated by the following claims and their full scope of equivalents. 

What is claimed is:
 1. A system for generating synthetic data, comprising: one or more memory units storing instructions; and one or more processors that execute the instructions to perform operations comprising: receiving a dataset comprising time-series data; generating a plurality of data segments based on the dataset; determining respective segment-parameters of the data segments; determining respective distribution measures of the data segments; training a parameter model to generate synthetic segment-parameters, the training being based on the segment parameters; training a distribution model to generate synthetic data-segments, the training being based on the distribution measures and the segment parameters; generating a synthetic dataset using the parameter model and the distribution model; and storing the synthetic dataset.
 2. The system of claim 1, wherein generating a synthetic dataset comprises: generating, via the parameter model, a series of synthetic segment-parameters; and generating, via the distribution model, a series of synthetic data-segments based on the series of synthetic segment-parameters;
 3. The system of claim 1, wherein: the operations further comprise generating the parameter model; and training the parameter model is based on generating the parameter model.
 4. The system of claim 1, wherein: the operations further comprise generating the distribution model; and training the distribution model is based on generating the distribution model.
 5. The system of claim 1, wherein generating data segments is based on a predetermined segment-size.
 6. The system of claim 1, wherein generating data segments comprises determining a segment-size based on a statistical measure of the dataset.
 7. The system of claim 1, wherein the segment parameters comprise a minimum value, a maximum value, a start value, and an end value.
 8. The system of claim 1, wherein the distribution measures include at least one of a variance, a standard deviation, or a regression result of a time-dependent function.
 9. The system of claim 1, wherein the parameter model comprises at least one of a recurrent neural network model or a long short-term memory model.
 10. The system of claim 1, wherein the distribution model comprises a multilayer perceptron model, a convolutional neural network model, or a sequence-to-sequence model
 11. The system of claim 1, wherein training the distribution model comprises: training the distribution model to generate synthetic segment data; determining synthetic distribution-measures of the synthetic data-segments; determining a performance metric based on the distribution measures and the synthetic distribution-measures; and terminating training of the distribution model based on the performance metric satisfying a criterion.
 12. The system of claim 1, wherein training the parameter model is based on an autocorrelation of the segment parameters.
 13. The system of claim 1, the operations further comprising: generating a data profile of the dataset; and storing the parameter model in a data index based on the data profile.
 14. The system of claim 1, the operations further comprising: generating a data profile of the dataset; and storing the distribution model in a data index based on the data profile.
 15. The system of claim 1, wherein: the dataset comprises multidimensional time-series data; the data segments comprise multidimensional data segments; and the segment parameters comprise multidimensional segment parameters.
 16. The system of claim 15, wherein: the operations further comprise determining a correlation of two or more dimensions of the segment-parameters; and training the parameter model is based on the correlation.
 17. The system of claim 1, wherein: receiving the dataset comprises receiving the dataset from a client device; and the operations further comprise transmitting the synthetic dataset to the client device.
 18. The system of claim 1, wherein receiving the dataset comprises receiving the dataset at a cloud service.
 19. A method for generating synthetic data, the method comprising: receiving a dataset comprising time-series data; generating a plurality of data segments based on the dataset; determining respective segment parameters of the data segments; determining respective distribution measures of the data segments; training a parameter model to generate synthetic segment-parameters, the training being based on the segment parameters; training a distribution model to generate synthetic data-segments, the training being based on the distribution measures and the segment parameters; generating a synthetic dataset using the parameter model and the distribution model; and storing the synthetic dataset.
 20. A system for generating synthetic data, comprising: one or more memory units storing instructions; and one or more processors that execute the instructions to perform operations comprising: receiving a dataset comprising time-series data; generating a data profile of the dataset; generating a plurality of data segments based on the dataset; determining respective segment-parameters of the data segments, the segment parameters comprising a minimum value, a maximum value, a start value, and an end value; determining respective distribution measures of the data segments; generating a parameter model based on the dataset; training the parameter model to generate synthetic segment-parameters, the training being based on the segment parameters; generating a distribution model based on the dataset; training the distribution model to generate synthetic data-segments, the training being based on the distribution measures and the segment parameters; generating a synthetic dataset by: generating, via the parameter model, a series of synthetic segment-parameters; and generating, via the distribution model, a series of synthetic data-segments based on the series of synthetic segment-parameters; storing the synthetic dataset; and storing the parameter model and the distribution model in a data index based on the data profile. 